/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appbastanteo1.controller;

import appbastanteo1.model.Poder;
import appbastanteo1.model.Grupo;
import appbastanteo1.*;
import java.util.ArrayList;

/**
 *
 * @author pc
 */
public class AdmPoderes {

    private ArrayList<Poder> poderes;

    public AdmPoderes() {

        poderes = new ArrayList<Poder>();
    }

    public void registrarPoder(
            String codigoCorto, String nombre, String tipoProducto, Grupo grupo)
            throws BusinessException {
       //Grupo grupo1 = new Grupo();
        validarDatos(codigoCorto, nombre, tipoProducto, grupo);
        validarDuplicado(codigoCorto);
        Poder nuevoPoder = new Poder(codigoCorto, nombre, tipoProducto, grupo);
        poderes.add(nuevoPoder);
        //grupo.setPoderes().

    }

    public void eliminarPoderes(String codigo) {
        Poder poderess = buscarPoderes(codigo);
        if (poderess != null) {
            getPoderes().remove(poderess);
        }
    }

    public Poder buscarPoderes(String codigoCorto) {
        for (Poder poder : getPoderes()) {
            if (poder.getCodigoCorto().equals(codigoCorto)) {
                return poder;
            }
        }
        return null;
    }

    public Poder buscarPoderesxNombre(String nombre) {
        for (Poder poder : getPoderes()) {
            if (poder.getNombre().equals(nombre)) {
                return poder;
            }
        }
        return null;
    }

    private void validarDatos(
            String codigoCorto, String nombre, String tipoProducto, Grupo grupo)
            throws BusinessException {
        String mensaje = "";
        if (codigoCorto.equals("")) {
            mensaje += "\nCodigo no puede ser vacio";
        }
        if (nombre.equals("")) {
            mensaje += "\nNombre no puede ser vacio";
        }
        if (tipoProducto.equals("")) {
            mensaje += "\nTipo Producto no puede ser vacio";
        }
        if (grupo == null) {
            mensaje += "\nGrupo no puede ser vacio";
        }
        if (!mensaje.equals("")) {
            throw new BusinessException(mensaje);
        }
    }

    private boolean poderExiste(String codigoCorto) {
        for (Poder Poderes : getPoderes()) {
            if (Poderes.getCodigoCorto().equals(codigoCorto)) {
                return true;
            }
        }
        return false;
    }

    private void validarDuplicado(String codigoCorto) throws BusinessException {
        String mensaje = "";
        if (poderExiste(codigoCorto)) {
            mensaje = "\nYa existe un poder con Código " + codigoCorto;
            throw new BusinessException(mensaje);
        }
    }

    public int obtenerNumeropoderes() {
        return getPoderes().size();
    }

    public ArrayList<Poder> getPoderes() {
        return poderes;
    }

    public void setPoderes(ArrayList<Poder> Poderes) {
        this.poderes = Poderes;

    }

    public ArrayList<Poder> getPoderesxGrupo(Grupo grupo) {
        ArrayList<Poder> poderesxgrupo = new ArrayList<Poder>();
        try {
            Grupo grupo1 = new Grupo(1, "penal");
            Grupo grupo2 = new Grupo(2, "legal");
            Grupo grupo3 = new Grupo(3, "derechos varios");
            poderes.clear();
            poderes.add(new Poder("CHO", "penales", "A", grupo1));
            poderes.add(new Poder("CEE", "legales", "P", grupo2));
            poderes.add(new Poder("DDP", "laboral 1", "A", grupo3));
            poderes.add(new Poder("DDL", "laboral 2", "A", grupo3));

            for (Poder poder : poderes) {
                if (poder.getGrupo().getId() == grupo.getId()) {
                    poderesxgrupo.add(poder);
                }
            }
            return poderesxgrupo;
        } catch (Exception e) {
            return null;
        }
    }
}
